package com.znv.linkup.view.animation;
import java.util.ArrayList;
import java.util.List;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.ObjectAnimator;
import android.graphics.Point;
import com.znv.linkup.view.animation.path.AnimatorPath;
import com.znv.linkup.view.animation.path.PathEvaluator;
import com.znv.linkup.view.animation.view.IAnimatorView;
/**
* 文字或者图片的动画
*
* @author yzb
*
*/
public class ViewPathAnimator implements AnimatorListener {
private IAnimatorView view = null;
private int duration = 400;
public ViewPathAnimator(IAnimatorView view) {
this.view = view;
}
/**
* 设置动画的起始点
*
* @param start
* 动画起点
* @param end
* 动画终点
*/
public void animatePath(Point start, Point end) {
List<Point> pathPoints = new ArrayList<Point>();
pathPoints.add(start);
pathPoints.add(end);
animatePath(pathPoints);
}
/**
* 设置动画的起始点
*
* @param pathPoints
* 路径点
*/
public void animatePath(List<Point> pathPoints) {
if (pathPoints == null || pathPoints.size() == 0) {
return;
}
AnimatorPath path = new AnimatorPath();
path.moveTo(pathPoints.get(0).x, pathPoints.get(0).y);
for (int i = 1; i < pathPoints.size(); i++) {
path.lineTo(pathPoints.get(i).x, pathPoints.get(i).y);
}
ObjectAnimator anim = ObjectAnimator.ofObject(view, "location", new PathEvaluator(), path.getPoints().toArray());
anim.addListener(this);
anim.setDuration(duration);
anim.start();
}
@Override
public void onAnimationCancel(Animator arg0) {
view.setAlpha(0f);
}
@Override
public void onAnimationEnd(Animator arg0) {
view.setAlpha(0f);
}
@Override
public void onAnimationRepeat(Animator animation) {
}
@Override
public void onAnimationStart(Animator animation) {
view.setAlpha(1f);
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public IAnimatorView getView() {
return view;
}
}